//导入@hapi/joi 表单验证包
const joi = require("@hapi/joi")
/**
 * string() 值必须是字符串
 * alphanum() 值只能是包含 a-zA-Z0-9 的字符串
 * min(length) 最小长度
 * max(length) 最大长度
 * required() 值是必填项，不能为 undefined
 * pattern(正则表达式) 值必须符合正则表达式的规则
 * error(new Error(" 错误提示")) 自定义错误提示
 */

//用户名的验证规则
const username =  joi.string().alphanum().min(1).max(10).required().error(new Error('用户名格式错误'));

//密码验证规则
const password = joi.string().pattern(/^[\S]{6,12}$/).required().error(new Error('密码格式错误'));

//id验证规则
const id = joi.number().integer().min(1).required().error(new Error('格式错误'))

//昵称验证规则
const nickname = joi.string().required().error(new Error('格式错误'))

//邮箱验证规则
const email = joi.string().email().required().error(new Error('格式错误'))

//头像验证规则
const avatar = joi.string().dataUri().required()

//暴露出验证对象
module.exports = {
  //登录注册验证规则
  reg_login_schema:{
    body:{
      username,
      password
    }
  },
  //更改信息验证规则
  updataUserInfo_schema:{
    body:{
      id,
      nickname,
      email
    }
  },
  //更改密码验证规则
  updatapwd_schema:{
    body:{
      oldPwd:password,
      // 1. joi.ref('oldPwd') 表示 newPwd 的值必须和 oldPwd 的值保持一致
      // 2. joi.not(joi.ref('oldPwd')) 表示 newPwd 的值不能等于 oldPwd 的值
      // 3. .concat() 用于合并 joi.not(joi.ref('oldPwd')) 和 password 这两条验证规则
      newPwd:joi.not(joi.ref('oldPwd')).concat(password),
      // id,
    }
  },
  //验证头像
  updataavatar_schema: {
    body: {
      avatar,
    }
  }

}